// =====================================================================================
// 
//       Filename:  pack.h
// 
//    Description:  
// 
//        Version:  1.0
//        Created:  23.03.2010 16:41:09
//       Revision:  none
//       Compiler:  g++
// 
//         Author:  Dmitriy Serdyuk (), serdyuk.dmitriy@gmail.com
//        Company:  
// 
// =====================================================================================

#ifndef _PACK_H_
#define _PACK_H_ 0

#include<iostream>
#include<vector>
        
const int NUM_OF_SUITS = 4;
const int NUM_OF_RANGES = 13;
const int NUM_OF_CARDS = 2;

enum SUITS {spades, clubs, diamonds, hearts};
//std::vector<std::string> Suits = ["spades", "clubs", "diamonds", "hearts"];

enum RANGES {A, K, Q, J, f10, f9, f8, f7, f6, f5, f4, f3, f2};
const int startCash = 10000;


struct Card{
    RANGES myRange;
    SUITS mySuit;

    const bool operator<(const Card c) const{
        if (this->myRange < c.myRange) {
            return true;
        }
        return false;
    }

    const bool operator>(const Card c) const{
        if (this->myRange > c.myRange) {
            return true;
        }
        return false;

    }

    const bool operator==(const Card c) const{
        if (this->myRange == c.myRange) {
            return true;
        }
        return false;
    }
};

std::ostream & operator<<(std::ostream &, Card &);

typedef std::vector<Card> Cards;

std::ostream & operator<<(std::ostream &, Cards &);

class Pack{
    private:
        Cards myCards;

    public:
        Pack();
        void shuffle();
        const Card getCard();
        void reset();

};


#endif
